package com.jboost.common.api;

import com.alibaba.fastjson.JSONObject;
import com.jboost.common.file.FileCommonVo;
import com.jboost.common.file.JboostFileVo;
import com.jboost.common.system.vo.*;

import java.util.List;
import java.util.Set;

public interface CommonAPI {

    /**
     * 1查询用户角色信息
     * @param username
     * @return
     */
    Set<String> queryUserRoles(String username);

   /**
     * 查询用户角色列表
     * @param domain
     * @return
     */
    List<SysRoleVo> listRoles(String  domain);


    /**
     * 2查询用户权限信息
     * @param username
     * @return
     */
    Set<String> queryUserAuths(String username);

    /**
     * 3根据 id 查询数据库中存储的 DynamicDataSourceModel
     *
     * @param dbSourceId
     * @return
     */
    DynamicDataSourceModel getDynamicDbSourceById(String dbSourceId);

    /**
     * 4根据 code 查询数据库中存储的 DynamicDataSourceModel
     *
     * @param dbSourceCode
     * @return
     */
    DynamicDataSourceModel getDynamicDbSourceByCode(String dbSourceCode);

    /**
     * 5根据用户账号查询用户信息
     * @param username
     * @return
     */
    public LoginUser getUserByName(String username);
   /**
     * 5根据用户id查询用户信息
     * @param userId
     * @return
     */
    public LoginUser getUserById(String userId);
    /**
     * 5根据用户id查询用户信息
     * @param userIdList
     * @return
     */
    public List<LoginUser> getUserByIds(List<String> userIdList);
    /**
     * 根据用户登录名查询用户信息
     * @param userNameList
     * @return
     */
    public List<LoginUser> getUserByUserNames(List<String> userNameList);

    /**
     * 查询用户详细信息
     * @param domain
     * @return
     */
    public List<SysUserVo> getAllUser(String domain);

    /**
     * 根据账号名查询账号信息
     * @param accountName
     * @return
     */
    public LoginUser getAccountByName(String accountName);


    /**
     * 6字典表的 翻译
     * @param table
     * @param text
     * @param code
     * @param key
     * @return
     */
    String translateDictFromTable(String table, String text, String code, String key);

    /**
     * 7普通字典的翻译
     * @param code
     * @param key
     * @return
     */
    String translateDict(String code, String key);

    /**
     * 8查询数据权限
     * @return
     */
    List<SysPermissionDataRuleModel> queryPermissionDataRule(String component, String requestPath, String username);


    /**
     * 9查询用户信息
     * @param username
     * @return
     */
    SysUserCacheInfo getCacheUser(String username);

    /**
     * 10获取数据字典
     * @param code
     * @return
     */
    public List<DictModel> queryDictItemsByCode(String code);

    /**
     * 11获取数据字典
     * @param code
     * @return
     */
    public DictModel queryDictItemsByCodeAndItemValue(String code,String itemValue);

    /**
     * 13获取表数据字典
     * @param table
     * @param text
     * @param code
     * @return
     */
    List<DictModel> queryTableDictItemsByCode(String table, String text, String code);

    /**
     * 添加数据快照
     * @param tableName
     * @param dataId
     * @param dataContent
     */
    void addDataLog(String tableName, String dataId, String dataContent);

    public List<SysUserVo> queryUsersByRoleCode(String roleCode,String domain);

    List<String> getUserRoles(String id);

    FileCommonVo getFileById(String fileId);

    JSONObject getBusinessById(String storeId);
}
